import json
from routes.session import session
from utils import (
    log,
    redirect,
    http_response,
    json_response,
)
from models.todo import Todo


# 本文件只返回 json 格式的数据
# 而不是 html 格式的数据
def all(request):
    """
    返回所有 todo
    """
    todo_list = Todo.all()
    # 要转换为 dict 格式才行
    todos = [t.get_dict() for t in todo_list]
    return json_response(todos)


def add(request):
    """
    接受浏览器发过来的添加 todo 请求
    添加数据并返回给浏览器
    """
    # form 为dict或list
    form = request.json()
    # 创建一个 todo
    t = Todo.new(form)
    # 把创建好的 todo 返回给浏览器
    # 通过t.get_dict() 获取实例的self.__dict__
    # 下面写法一样
    return json_response(t.get_dict())
    # return json_response(t.__dict__.copy())


def delete(request):
    """
    通过下面这样的链接来删除一个 todo
    /delete?id=1
    """
    todo_id = int(request.query.get('id'))
    t = Todo.delete(todo_id)
    return json_response(t.get_dict())


def update(request):
    # header = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n'
    form = request.form()
    todo_id = int(form.get('id'))
    t = Todo.update(todo_id, form)
    return json_response(t.get_dict())


route_dict = {
    '/api/todo/all': all,
    '/api/todo/add': add,
    '/api/todo/delete': delete,
    '/api/todo/update': update,
}
